package com.shopping.huaju.commodity.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.shopping.huaju.commodity.entity.vo.Catalog2VO;
import com.shopping.huaju.common.utils.PageUtils;
import com.shopping.huaju.commodity.entity.CategoryEntity;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Map;

/**
 * 商品分类表
 *
 * @author tofu
 * @email tofu@qq.com
 * @date 2023-11-01 10:37:04
 */
public interface CategoryService extends IService<CategoryEntity> {

    //定义接口 返回 指定树形格式的商品分类列表
    //返回所有分类及其子分类(层级关系-即树形)
    List<CategoryEntity> listTree();
    PageUtils queryPage(Map<String, Object> params);
    //自定义接口 根据 categoryId 返回该 分类的 层级id结构信息
    //形式 [一级分类id,二级分类id,三级分类id,...]
    Long[] getCascaderCategoryId(Long categoryId);

    //自定义接口 -- 根据分类的父类id返回对应的 分类集合
    List<CategoryEntity> getCategoriesByParentCategory(Long parent_id);
    //获取全部数据再根据父类id 进行筛选返回对应的分类集合
    List<CategoryEntity> getCategoriesByParentCategoryInList(List<CategoryEntity> categoryEntityList,Long parent_id);
    //自定义接口 -- 返回第一层分类
    List<CategoryEntity> getLevel1Categories();
    //自定义接口 -- 先获取的全部数据再筛选返回第一层分类
    List<CategoryEntity> getLevel1CategoriesInList(List<CategoryEntity> categoryEntityList);
    //自定义接口，返回指定类型的层级结构信息
    Map<String,List<Catalog2VO>> getCatalogLevelMap();

    void updateCategoryAndRelation(CategoryEntity category);

    void deleteCategoryAndRelation(Long[] ids);
}

